package com.gin.no_gay_alliance.database.dao;

import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;

import com.gin.no_gay_alliance.database.entity.TopicHistory;

import java.util.List;

/**
 * 主题浏览历史Dao
 *
 * @author : ginstone
 * @version : v1.0.0
 * @since : 2023/9/15 14:54
 **/
@Dao
public interface TopicHistoryDao {
    /**
     * 添加一个主题浏览历史
     *
     * @param topicHistory 主题历史
     */
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void add(TopicHistory topicHistory);

    /**
     * 按主题id查询
     *
     * @param topicId 主题id
     * @return 浏览历史
     */
    @Query("select * from TopicHistory where topicId=:topicId")
    TopicHistory get(long topicId);

    /**
     * 执行查询
     *
     * @param keyword 标题或楼主关键字
     * @param page    页数
     * @param size    每页条数
     * @return 浏览历史
     */
    @Query("SELECT * FROM TopicHistory where 1=1 and (:keyword is null or authorName like '%' || :keyword || '%' or title like '%' || :keyword || '%') order by timestamp desc limit :size offset (:page-1)*:size ")
    List<TopicHistory> list(String keyword, int page, int size);

    /**
     * 修改一个主题的"上次浏览的页数"
     *
     * @param topicId 主题id
     * @param page    页数
     */
    @Query("UPDATE TopicHistory SET page=:page where topicId=:topicId")
    void updatePage(long topicId, int page);
}
